package cn.gson.springboot.model.mapper.aftermapper;

import cn.gson.springboot.model.pjos.Dept;
import cn.gson.springboot.model.pjos.Expense;
import cn.gson.springboot.model.vo.aftervo.MaintainChartVo;
import cn.gson.springboot.model.vo.aftervo.PieDoubleVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface ExpenseMapper {

    //分页查询销售费用表
    public List<Expense> expsPage(@Param("employeesId") Integer employeesId,
                                  @Param("fatherDeptId") Integer fatherDeptId,
                                  @Param("expsSort") String states,
                                  @Param("expsPurpose") String search);

    //查询所有部门下员工
    public List<Dept> empAll();

    //回显销售费用表
    public Expense expsAll(Integer expsId);

    //回显员工id
    public String expsByempId(Integer expsId);

    //通过员工id查询出员工姓名
    public String empByEmpName(Integer employeesId);

    //费用类别分布
    public List<MaintainChartVo> expsBySort(@Param("employeesId") Integer employeesId,
                                            @Param("fatherDeptId") Integer fatherDeptId);

    //全年费用/人员分布（已审核）
    public List<PieDoubleVo> expsByMoney(@Param("employeesId") Integer employeesId,
                                         @Param("fatherDeptId") Integer fatherDeptId);

    //月度费用申报统计月份
    public List<String> expsByMonth(@Param("employeesId") Integer employeesId,
                                    @Param("fatherDeptId") Integer fatherDeptId);

    //月度费用申报统计数
    public List<Double> monthByMoney(@Param("employeesId") Integer employeesId,
                                     @Param("fatherDeptId") Integer fatherDeptId);

    //客户费用（已审核）统计客户
    public List<String> expsByCustom(@Param("employeesId") Integer employeesId,
                                     @Param("fatherDeptId") Integer fatherDeptId);

    //客户费用（已审核）统计数
    public List<Double> customBySum(@Param("employeesId") Integer employeesId,
                                    @Param("fatherDeptId") Integer fatherDeptId);

    //首先验证用户的身份,看用户是不是一级角色
    public List<Map<String, Object>> postLevelByEmp(Integer employeesId);

    //如果是普通员工，则查询出同部门拥有一级角色的员工
    public Integer ordinaryByTwo(Integer deptsId);

    //如果是一级角色，则查询出上级部门的一级角色
    public Integer ordinaryByOne(Integer deptsId);

    //查出拥有最高权限的员工
    public Integer ordinaryByBoss();
}
